#include <bits/stdc++.h>
using namespace std;
int n, tot = 0;
int col[12] = {0};
bool check(int r, int c){
    for(int i = 0; i < r; i++){
        if(col[i] == c || (abs(col[i] - c) == abs(i - r)))
            return false;
    }
    return true;
}

void DFS(int r){
    if(r == n){ //一种可能
        tot++;  //统计合法的棋局个数
        return;
    }
    //在当前行每一列尝试放皇后
    for(int c = 0; c < n; c++){
        if(check(r, c)){    //可以放
            col[r] = c;     //第r行的c列放皇后
            DFS(r + 1);     //继续下一行
        }
    }
}
int main(){
    //算出所有N皇后的答案。先打表，不然会超时。
    int ans[12] = {0};
    for(n = 0; n <= 10; n++){
        //清空，准备计算
        memset(col, 0, sizeof(col));
        tot = 0;
        DFS(0);
        //打表
        ans[n] = tot;
    }
    while(cin>>n){
        if(n == 0) return 0;
        cout<<ans[n]<<endl;
    }
    return 0;
}